package queuedemo;
//size指定法
public class MyCircularQueue2 {
public int[] elem;
public int front;
public int rear;
public int size;
    public MyCircularQueue2(int k) {
elem=new int[k];
    }
    //入队
    public boolean enQueue(int value) {
        if (isFull()) return false;
        elem[rear]=value;
        rear=(rear+1)%elem.length;
        size++;
        return true;
    }
    //出队
    public boolean deQueue() {
        if (isEmpty()) return false;
        front=(front+1)%elem.length;
        size--;
        return true;
    }
    //获取队头元素
    public int Front() {
        if (isEmpty()) return -1;
        return elem[front];
    }
    //获取队尾元素
    public int Rear() {
        if (isEmpty()) return -1;
        int index=(rear==0)?elem.length-1:rear-1;
        return elem[index];
    }
    //判断是否为空
    public boolean isEmpty() {
        return size==0;
    }
    //判断是否为满
    public boolean isFull() {
        return size==elem.length;
    }
}
